package org.bread.worm.cms.channel.dao;

import java.util.List;

import org.bread.worm.cms.basic.dao.BaseDao;
import org.bread.worm.cms.channel.bean.Channel;
import org.bread.worm.cms.channel.bean.ChannelTree;
import org.bread.worm.cms.channel.bean.ChannelType;

public interface ChannelDao extends BaseDao<Channel> {


	/**
	 * 根据父id获取所有的子栏目
	 * @param pid 父ID
	 * @return
	 */
	public List<Channel> listByParentId(Integer pid);
	

	/**
	 * 获取子栏目的最大的排序号
	 * @param pid  父ID
	 * @return
	 */
	public int getMaxOrderByParentId(Integer pid);
	
	/**
	 * 把所有的栏目获取并生成一颗完整的树
	 * @return
	 */
	public List<ChannelTree> generateTree();
	/**
	 * 根据父类对象获取子类栏目，并且生成树列表
	 * @param pid
	 * @return
	 */
	public List<ChannelTree> generateTreeByParent(Integer pid);
	
	
	/**
	 * 修改栏目列表顺序
	 * @param ids 栏目ID
	 */
	public void updateSort(Integer[] ids);

	/**
	 * 获取所有的可以发布文章的栏目，栏目的状态必须为启用状态
	 * @return
	 */
	public List<Channel> listPublishChannel();
	
	/**
	 * 根据栏目类型获取所有的首页栏目
	 * @return
	 */
	public List<Channel> listAllIndexChannel(ChannelType ct);
	
	public List<Channel> listTopNavChannel();
	/**
	 * 删除频道和组的对应关系
	 * @param cid
	 * @return
	 */
	public void deleteChannelGroups(int cid);
	/**
	 * 获取导航栏目中的第一个栏目
	 * @param cid
	 * @return
	 */
	public Channel loadFirstChannelByNav(int cid);
	
	public List<Channel> listUseChannelByParent(Integer cid);
	/**
	 * 通过类型来获取所有未停用的栏目
	 * @param ct
	 * @return
	 */
	public List<Channel> listChannelByType(ChannelType ct);
	
	
}
